package com.systop.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.systop.domain.vo.GoodsStockVo;
import com.systop.entity.GoodsStock;
import com.systop.entity.Order;
import com.systop.entity.StockLockDetail;
import com.systop.utils.sql.PageUtils;

import java.util.List;
import java.util.Map;

/**
 * @Description: TODO
 * @Author: jsj
 * @Date: 2023/2/19
 */
public interface GoodsStockService extends IService<GoodsStock> {
    //库存数检查
    public boolean stockMatch(List<GoodsStockVo> goodsStockVoList);
    //判断库存表中是否已经存在商品id (返回已经存在的商品id)
    public List<Long> existGoodsIds(List<Long> goodsIds);
    //批量添加库存
    public void stockBatchAdd(List<GoodsStock> goodsStockList);
    //根据商品id批量修改库存
    void updateBatchByGoodsId(List<GoodsStock> goodsStockList);
    //库存数检查(判断库存量减去锁定库存是否大于等于0)
    boolean lockStockMatch(GoodsStockVo goodsStockVo,GoodsStock goodsStock);
    //根据商品id查询对应库存信息
    GoodsStock getStockByGoodsId(Long goodsId);
    //分页查询库存信息 基础信息
    PageUtils selectStockList(Map<String, Object> params);
    //分页查询库存信息 前台显示信息
    PageUtils queryStockList(Map<String, Object> params);
    //更新库存方法
    boolean updateStock(GoodsStockVo goodsStockVo);

    //锁定库存方法
    Boolean orderLockStock(List<Order> orderList);

    //解锁库存方法
    void unLockStock(List<StockLockDetail> stockLockDetailList);

}
